package com.hznc.wcs.service.bpm;

import com.diboot.core.vo.Pagination;

import com.hznc.wcs.vo.bpm.BpmModelCreateReqVO;
import com.hznc.wcs.vo.bpm.BpmModelReqVO;
import com.hznc.wcs.vo.bpm.BpmModelRespVO;
import com.hznc.wcs.vo.bpm.BpmModelUpdateReqVO;
import org.flowable.engine.repository.Model;

import java.util.List;

/**
 * @Description :
 * @Date : 2024/6/20
 * @Author : ChenJin
 * @Version : v1.0.0
 **/
public interface BpmModelService {

    /**
     * 查询流程部署信息列表
     * @param reqVO
     * @param pagination
     * @return
     */
    List<BpmModelRespVO> getBpmModelPage(BpmModelReqVO reqVO, Pagination pagination);

    /**
     * 查看流程部署详情
     * @param modelId
     * @return
     */
    BpmModelRespVO getBpmModelInfo(String modelId);

    /**
     * 创建流程模型
     * @param modelVO
     * @param bpmnXml
     * @return
     */
    String createModel(BpmModelCreateReqVO modelVO, String bpmnXml);

    /**
     * 修改流程模型
     * @param modelVO
     * @param bpmnXml
     * @return
     */
    String updateModel(BpmModelUpdateReqVO modelVO, String bpmnXml);

    /**
     * 删除流程模型
     * @param modelId
     */
    void deleteModel(String modelId);

    /**
     * 发布流程模型
     * @param modelId
     * @return
     */
    String deployModel(String modelId);

    /**
     * 修改已发布流程模型状态,激活或挂起
     * @param modelId
     * @param state
     */
    void updateModelState(String modelId, Integer state);

    /**
     * @param modelId
     * @return
     */
    Model getModelById(String modelId);

    /**
     * @param modelKey
     * @return
     */
    Model getModelByKey(String modelKey);

    /**
     * 
     * @param modelId
     * @return
     */
    byte[] getModelBpmnXML(String modelId);

    void saveModelBpmnXml(Model model, String bpmnXml);

}
